package com.ayz.gateway.core.core.common;

import cn.hutool.log.Log;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelFutureListener;

import java.net.SocketAddress;

/**
 * @ClassName RemotingUtils
 * @Description TODO
 * @Author 快乐的星球
 * @Date 2023/4/2 18:59
 * @Version 1.0
 **/
public class RemotingUtils {

    public static final Log log=Log.get(RemotingUtils.class);

    public static void closeChannel(Channel channel){
        SocketAddress address = channel.remoteAddress();
        /**
         * 当前是Netty的使用技巧，在使用netty的时候
         * 我们可以选择在每一个操作后添加监听，当这个异步操作完成后
         * 可以发布时事件，回调监听逻辑
         */
        channel.close().addListener(new ChannelFutureListener() {
            @Override
            public void operationComplete(ChannelFuture channelFuture) throws Exception {
                //完成了连接关闭事件
                log.info("关闭了连接远程地址:{} 的连接,结果是:{}",address,channelFuture.isSuccess());
            }
        });
    }

    /**
     * 判断当前机器是不是Linux操作系统
     * @return
     */
    public static boolean isLinuxPlatform(){
        String osName = System.getProperty("os.name");
        return osName.equals("linux");
    }

}
